Add a vfunc for gdk_keymap_get_for_display
authorMatthias Clasen <mclasen@redhat.com>
Thu, 16 Dec 2010 05:08:42 +0000 (00:08 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 21 Dec 2010 17:07:02 +0000 (12:07 -0500)
gdk/gdkdisplay.c
gdk/gdkdisplayprivate.h
gdk/x11/gdkdisplay-x11.c
gdk/x11/gdkkeys-x11.c
gdk/x11/gdkprivate-x11.h

index bacefc9359b03abbd185fb7ebc97acf2c45e9e16..06b4f5642df729c1af5e8f477fc3e33db058c785 100644 (file)
@@ -2535,3 +2535,19 @@ _gdk_display_create_window_impl (GdkDisplay       *display,
                                                        attributes,
                                                        attributes_mask);
 }
+
+/**
+ * gdk_keymap_get_for_display:
+ * @display: the #GdkDisplay.
+ *
+ * Returns the #GdkKeymap attached to @display.
+ *
+ * Return value: (transfer none): the #GdkKeymap attached to @display.
+ *
+ * Since: 2.2
+ */
+GdkKeymap*
+gdk_keymap_get_for_display (GdkDisplay *display)
+{
+  return GDK_DISPLAY_GET_CLASS (display)->get_keymap (display);
+}
index 4b1530243d3ad9a11df4a682b9990239e4b6882a..2d5630a814193667d1c0f579a3a04c468df67331 100644 (file)
@@ -191,6 +191,8 @@ struct _GdkDisplayClass
                                                     GdkWindowAttr *attributes,
                                                     gint           attributes_mask);
 
+  GdkKeymap *                (*get_keymap)         (GdkDisplay    *display);
+
   /* Signals */
   void (*closed) (GdkDisplay *display,
                   gboolean    is_error);
index 2ecc335dd3c92139b154b961bf9b3eb791f9d989..3f585623f6fab8230d9122ef4339756998eac256 100644 (file)
@@ -32,6 +32,7 @@
 #include "gdkscreen.h"
 #include "gdkinternals.h"
 #include "gdkdeviceprivate.h"
+#include "gdkkeysprivate.h"
 #include "gdkdevicemanager.h"
 #include "xsettings-client.h"
 #include "gdkdisplay-x11.h"
@@ -2680,6 +2681,21 @@ gdk_x11_display_event_data_free (GdkDisplay *display,
 {
 }
 
+static GdkKeymap *
+gdk_x11_display_get_keymap (GdkDisplay *display)
+{
+  GdkDisplayX11 *display_x11;
+  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
+  display_x11 = GDK_DISPLAY_X11 (display);
+
+  if (!display_x11->keymap)
+    display_x11->keymap = g_object_new (_gdk_keymap_x11_get_type (), NULL);
+
+  display_x11->keymap->display = display;
+
+  return display_x11->keymap;
+}
+
 static void
 _gdk_display_x11_class_init (GdkDisplayX11Class * class)
 {
@@ -2726,4 +2742,5 @@ _gdk_display_x11_class_init (GdkDisplayX11Class * class)
   display_class->event_data_copy = gdk_x11_display_event_data_copy;
   display_class->event_data_free = gdk_x11_display_event_data_free;
   display_class->create_window_impl = _gdk_x11_display_create_window_impl;
+  display_class->get_keymap = gdk_x11_display_get_keymap;
 }
index 5aa0d26e5ef40d687a95fcfaf71b11a76d3e2805..c18aac1fe95d9db85f6569963de75655f136e756 100644 (file)
@@ -52,7 +52,7 @@
 typedef struct _GdkKeymapX11   GdkKeymapX11;
 typedef struct _GdkKeymapClass GdkKeymapX11Class;
 
-#define GDK_TYPE_KEYMAP_X11          (gdk_keymap_x11_get_type ())
+#define GDK_TYPE_KEYMAP_X11          (_gdk_keymap_x11_get_type ())
 #define GDK_KEYMAP_X11(object)       (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_KEYMAP_X11, GdkKeymapX11))
 #define GDK_IS_KEYMAP_X11(object)    (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_KEYMAP_X11))
 
@@ -102,15 +102,15 @@ struct _GdkKeymapX11
 #define KEYMAP_USE_XKB(keymap) GDK_DISPLAY_X11 ((keymap)->display)->use_xkb
 #define KEYMAP_XDISPLAY(keymap) GDK_DISPLAY_XDISPLAY ((keymap)->display)
 
-static GType gdk_keymap_x11_get_type   (void);
+GType _gdk_keymap_x11_get_type   (void);
 static void  gdk_keymap_x11_class_init (GdkKeymapX11Class *klass);
 static void  gdk_keymap_x11_init       (GdkKeymapX11      *keymap);
 static void  gdk_keymap_x11_finalize   (GObject           *object);
 
 static GdkKeymapClass *parent_class = NULL;
 
-static GType
-gdk_keymap_x11_get_type (void)
+GType
+_gdk_keymap_x11_get_type (void)
 {
   static GType object_type = 0;
 
@@ -275,31 +275,6 @@ get_xkb (GdkKeymapX11 *keymap_x11)
  * to checking the next event with XPending().
  */
 
-/**
- * gdk_keymap_get_for_display:
- * @display: the #GdkDisplay.
- *
- * Returns the #GdkKeymap attached to @display.
- *
- * Return value: (transfer none): the #GdkKeymap attached to @display.
- *
- * Since: 2.2
- **/
-GdkKeymap*
-gdk_keymap_get_for_display (GdkDisplay *display)
-{
-  GdkDisplayX11 *display_x11;
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
-  display_x11 = GDK_DISPLAY_X11 (display);
-
-  if (!display_x11->keymap)
-    display_x11->keymap = g_object_new (gdk_keymap_x11_get_type (), NULL);
-
-  display_x11->keymap->display = display;
-
-  return display_x11->keymap;
-}
-
 /* Find the index of the group/level pair within the keysyms for a key.
  * We round up the number of keysyms per keycode to the next even number,
  * otherwise we lose a whole group of keys
index 88b5ef2551aaa686210cf5d18833e0a4dc32eba4..2d5ba3e31e6f10622a1d31df4c6e30b5ce6f32b5 100644 (file)
@@ -123,6 +123,8 @@ gboolean _gdk_x11_moveresize_handle_event   (XEvent     *event);
 gboolean _gdk_x11_moveresize_configure_done (GdkDisplay *display,
                                              GdkWindow  *window);
 
+GType    _gdk_keymap_x11_get_type        (void);
+
 void     _gdk_x11_keymap_state_changed   (GdkDisplay      *display,
                                           XEvent          *event);
 void     _gdk_x11_keymap_keys_changed    (GdkDisplay      *display);